/* 
从若干副扑克牌中随机抽 5 张牌，判断是不是一个顺子，即这5张牌是不是连续的。2～10为数字本身，A为1，J为11，Q为12，K为13，而大、小王为 0 ，可以看成任意数字。A 不能视为 14。


输入: [1,2,3,4,5]
输出: True


解读：每一项的范围在[0,13]，而且重复的0也视为顺子
满足顺子：
1. 没有大小王时：最大值与最小值的差值小于5
由于大小王可以替换任何数，同时大小王本身占了一张牌数，所以有大小王时最大值与最小值的差值也应该小于5

思路：满足顺子的条件：抽出的五张牌中最大值与最小值的差值小于5
集合Set+遍历
*/

/**
 * @param {number[]} nums
 * @return {boolean}
 */
 var isStraight = function(nums) {
    // 声明最大值，最小值
    let max=0,min=13
    let nSet=new Set()
    for (const val of nums) {
        // 跳过大小王
        if(val==0)continue
        // min   
        // max   
        max=Math.max(val,max)   // 找出数组中最大牌
        min=Math.min(val,min)   // 找出最小牌
        // 如果有重复数就返回false
        if(nSet.has(val))return false
        // 否则就存入set
        nSet.add(val)
    }
    return max-min<5?true:false
    
};

let nums = [4,7,5,9,2]
// let nums = [1,2,3,4,5]

let res = isStraight(nums)
console.log(res);